package com.example.mybatisplusdemo.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.mybatisplusdemo.model.domain.Store;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.mybatisplusdemo.model.dto.LocationDTO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lxp
 * @since 2025-07-04
 */
public interface IStoreService extends IService<Store> {

    List<Store> getStoresByCategory(String category);

    List<Store> getTop20FavoriteStores();

    Long getFavoriteCountById(Long id);

    Long getReviewCountById(Long id);

    Double getAvgScoreById(Long id);


    Store getStoreById(Long id);

    boolean updateStore(Store store);

    List<Store> getStoreListByMerchantId(Long merchantId);

    List<Store> searchStores(String keyword);

    List<Store> getTop20FiveStarStores();

    List<Store> getTop20ReviewStores();

    List<Store> getTop10AvgScoreStores();

    Page<Store> getPendingStores(Page<Store> page);

    Long getFiveStarCountById(Long id);

    double getStoreRating(Long storeId);

    boolean approveStore(Long storeId);

    LocationDTO getStoreLocationById(Long storeId);

    Double calculateDistance(Double lon1, Double lat1, Double lon2, Double lat2);

    boolean closeStoreById(Long id);

    boolean rejectStore(Long storeId);
}
